#include "processbar.h"

const char *lable="|/-\\";

//void process()
//{
// //const int n=101;
// //char buff[n];//VS下编译不通过
// char buffer[NUM];
// memset(buffer,'\0',sizeof(buffer));
// int cnt=0;
// int n=strlen(lable);
// buffer[0]=Head;
//
// while(cnt<=100)
// {
//   printf("[%-100s][%3d%%][%c]\r",buffer,cnt,lable[cnt%n]);
//   fflush(stdout);
//   buffer[cnt++]=Body;
//   if(cnt<100){
//     buffer[cnt]=Head; 
//   }
//   usleep(50000);
// }
// printf("\n");
//}


//version 2:进度条依附于其他应用，比如下载
char buffer[NUM]={0};
void process_flush(double rate){
  static int cnt=0;
  int n=strlen(lable);
  if(rate<=1.0) buffer[0]=Head;
  printf("[%-100s][%.1f%%][%c]\r",buffer,rate,lable[cnt%n]);
  fflush(stdout);
  buffer[(int)rate]=Body;
  if((int)rate+1<100) buffer[(int)rate+1]=Head;
  if(rate>=100.0) printf("\n");
  cnt++;
  cnt%=n;
}

